﻿// 3601. 成绩排序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
/*
https://www.acwing.com/problem/content/description/3604/

有 N个学生的数据，将学生数据按成绩从低到高排序，如果成绩相同则按姓名字符的字典序排序，
如果姓名的字典序也相同则按照学生的年龄从小到大排序，并输出 N个学生排序后的信息。

输入格式
第一行有一个整数 N。

接下来的 N行包括 N个学生的数据。每个学生的数据包括姓名（长度不超过 100的字符串）、
年龄（小于等于 100的正数）、成绩（小于等于 100 的正数）。

输出格式
将学生信息按成绩进行排序，成绩相同的则按姓名的字母序进行排序。

然后输出学生信息，按照如下格式：

姓名 年龄 成绩

学生姓名的字母序区分字母的大小写，如 A
 要比 a
 的字母序靠前（因为 A
 的 ASCII 码比 a
 的 ASCII 码要小）。

数据范围
1≤N≤1000
输入样例：
3
abc 20 99
bcd 19 97
bed 20 97
输出样例：
bcd 19 97
bed 20 97
abc 20 99
*/

const int N = 1010;
struct STUDENT {
	string name;
	int age;
	int score;
}student[N];

int n;


bool cmp(const struct STUDENT& a, const struct STUDENT& b) {
	if (a.score < b.score) return true;
	else if (a.score == b.score) {
		if (a.name < b.name) {
			return true;
		}
		else if (a.name == b.name) {
			if (a.age < b.age) {
				return true;
			}
		}
	}

	return false;
}


int main()
{
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> student[i].name >> student[i].age >> student[i].score;
	}

	sort(student,student+n,cmp);

	for (int i = 0; i < n; i++) {
		cout << student[i].name << " " << student[i].age << " " << student[i].score << endl;
	}
	return 0;
}
